Storage allocation in information processing systems is a process that involves configuring and initializing data storage devices and mapping parts of the storage areas on those storage devices. Sometimes this is via multiple layers of virtualization, onto storage containers (such as logical volumes or file systems) which can be used by applications. There may be multiple devices involved (such as physical storage media, storage area networks, switches, adapters, and so on) which need to be adjusted and configured to provide the storage containers required by the applications. Modem storage systems include devices that offer a wide range of functions, and that can be configured in a large number of ways. Storage allocation in these systems can be a complex and error-prone process, and reallocation (adjusting the system after some period of operation, to better serve the needs of the storage users) even more so.
In any environment wherein storage allocation is performed, there are a set of policies (explicit and/or implicit) governing the decisions that are made in the allocation process. These policies are often inchoate, embodied only in the actual (and often inconsistent) practices of the people carrying out the allocation. When allocation policies are made explicit, they are usually carried out only approximately, because the complexity of the allocation process makes it impossible for the people doing the allocation to check every decision for conformance to the written policies.
One designer teaches a manual method of allocating storage. Although the teaching is in the context of database management systems, it is understood that the process can be applied for any application (e.g. E-mail) that uses storage. The process involves the following steps: (1) understanding capabilities, configuration, and present commitments of the storage devices; (2) understanding application's data usage requirements; (3) learning resource allocation policies; (4) determining an effective layout for data using an appropriate strategy, under the constraints of policies that apply; and (5) implementing the layout using relevant system commands. The designer also teaches that once the initial data layout has been carried out, the allocated storage must be monitored manually using tools provided by the vendor, on a continuous basis to make sure that the desired performance goals are met. If there is a chronic failure to meet expected performance goals, then reallocation of storage must be done. The entire process is manual, and policies are not documented or documentable in a machine readable form. Therefore, this methodology requires significant skills on the part of the human administrator, careful bookkeeping of many details, and even then the process is often slow, costly, and error prone.
Another designer teaches a software-based approach to storage allocation. A software tool, when provided with a set of performance metrics describing the application storage needs, runs a series of algorithms and then recommends a storage allocation scheme that meets the performance metrics. While this approach provides an automated way for determining data layout, the remaining process is manual. Furthermore, the algorithms used for determining data layout do not separate policies from the optimization process. This teaching describes a static approach in which the automation software does not respond to real time changes in the storage requirements.
What is needed is an autonomic approach supporting explicitly stated policies: the storage allocation steps should be fully automated, the storage system should react to real time changes, and it should be possible to specify, explicitly, policies used in this automation.